In general, computer instructions of conventional computing systems can have up to two operands, each of which respectively points to data areas in a data buffer of a software program (program buffer). Each operand data area can have a fixed or variable length that ranges from zero to a size of the program buffer where that operand data area would reside. Each operand data area can also have other requirements, such as a randomly chosen address and/or a length that conforms to operand characteristics. In an example, the operand characteristics can comprise a starting address boundary, a non-overlapping architecture requirement, and a page crossing (i.e., a special memory boundary crossing requirement). Also, all operand data areas can have the same data area requirement or each operand data area can individually have a different data area requirement. The conventional computing systems utilize conventional data buffer managers to fit all operand data areas in the same program buffer with different data area requirements.
However, some computer instructions have more than two operands that point to data areas in the program buffer (e.g., cryptography instructions that have four operands that point to four different data areas in the program buffer). As the number of operands that point to data area increases, a complexity of assigning all the data areas within the same program buffer using conventional methods also increases. Therefore, there is a need for new data buffer manager that can handle any number of operand data areas in the program buffer.